
SET LINE 180
SET SERVEROUTPUT ON;


--1ERA PARTE: SECUENCIA SERVICIOS
CREATE SEQUENCE AUTO_IDSERVICIO
START WITH 10000000 INCREMENT BY 1;


--2DA PARTE: ALTA SERVICIOS
CREATE OR REPLACE PROCEDURE ALTA_SERVCIO(VTIPO IN VARCHAR2,VPERIODOPAGO IN NUMBER)
AS
	VTIPO_ACTUAL VARCHAR2(45);
BEGIN
		SELECT TIPO INTO VTIPO_ACTUAL FROM SERVICIO
		WHERE TIPO=VTIPO AND PERIODOPAGO=VPERIODOPAGO;
		IF (VTIPO_ACTUAL IS NOT NULL) THEN
			DBMS_OUTPUT.PUT_LINE('EL SERVICIO YA EXISTE, NO PUEDE SER DUPLICADO');
		END IF;
		EXCEPTION
		WHEN NO_DATA_FOUND THEN
			INSERT INTO SERVICIO(IDSERVICIO,TIPO,PERIODOPAGO)
			VALUES(AUTO_IDSERVICIO.NEXTVAL,VTIPO,VPERIODOPAGO);
			DBMS_OUTPUT.PUT_LINE('SE HA INGRESADO EL SERVICIO: '||VTIPO);	
			COMMIT;	
END ALTA_SERVCIO;
/

--DATOS DE PRUEBA
--SELECT * FROM SERVICIO;


--DELETE FROM SERVICIO;

--3RA PARTE: BAJAS

CREATE OR REPLACE PROCEDURE BAJA_SERVCIO(VIDSERVICIO IN NUMBER)
AS
BEGIN
	DELETE FROM SERVICIO WHERE IDSERVICIO=VIDSERVICIO;
	IF SQL%NOTFOUND THEN
		DBMS_OUTPUT.PUT_LINE('NO SE ELIMINÓ SERVICIO ALGUNO');
	ELSE
		DBMS_OUTPUT.PUT_LINE('HA SIDO ELIMINADO EL SERVICIO');
		COMMIT;
	END IF;
END BAJA_SERVCIO;
/

--DATOS DE PRUEBA
--SELECT * FROM SERVICIO;

--EXEC BAJA_SERVCIO(10000018);
--EXEC PROCBAJASRVCIO(10000099);--ÉSTE REGISTRO NO EXISTE, SE ATRAPA LA EXCEPCIÓN

--4TA PARTE: CAMBIOS
CREATE OR REPLACE PROCEDURE ACTUALIZA_SERVCIO(VIDSERVICIO IN NUMBER,VTIPO IN VARCHAR2,VPERIODOPAGO IN NUMBER)
AS
BEGIN
	UPDATE SERVICIO SET TIPO=VTIPO,PERIODOPAGO=VPERIODOPAGO
		WHERE IDSERVICIO=VIDSERVICIO;
	IF SQL%NOTFOUND THEN
		DBMS_OUTPUT.PUT_LINE('NO EXISTE EL SERVICIO A ACTUALIZAR');
	ELSE
		DBMS_OUTPUT.PUT_LINE('SE ACTUALIZÓ EL SERVICIO');
		COMMIT;
	END IF;
END ACTUALIZA_SERVCIO;
/

--DATOS DE PRUEBA
--SELECT * FROM SERVICIO;

--EXEC ACTUALIZA_SERVCIO(10000016,'LIBROS',1);
--EXEC ACTUALIZA_SERVCIO(10000099,'BUTACAS',1);--ÉSTE SERVICIO NO EXISTE, SE ATRAPA LA EXCEPCIÓN



